Принимает на входе строку ANSI и возвращает содержащую ее BSTR. Не выполняет никаких преобразований ANSI-Unicode.
BSTR SysAllocStringByteLen( char FAR* psz, unsigned int len );
Параметры
psz
Заканчивающаяся нулем строка, которую нужно
скопировать, или NULL, если новая строка должна остаться
неинициализированной.
len
Число байт, которые нужно скопировать из
psz. После скопированных символов добавляется нулевой символ, т. е. всего
выделяется len +1 байт.
Выделяет новую строку длиной в len байт,
копирует в нее len байт из исходной строки и затем добавляет к концу
нулевой символ. Имеется только в 32-разрядных системах.
Возвращаемое значение
Указатель на копию строки или NULL, если не
хватает памяти
Комментарии
Эта функция предназначена для создания BSTR, содержащих
двоичные данные. Вы можете использовать BSTR такого типа только в тех
случаях, если они не будут транслироваться из ANSI в Unicode или
наоборот.
Например, не используйте такие BSTR для обмена информацией
между 16- и 32-разрядными приложениями, выполняющимися под управлением
32-разрядной Windows. Слой OLE, обеспечивающий взаимодействие
16—32 (и 32—16), транслирует BSTR и разрушит двоичные данные. Для
передачи двоичных данных рекомендуется использовать SAFEARRAY типа
VT_UI1, который не транслируется OLE.
Если psz равен
NULL, то строка заданной длины выделяется, но не инициализируется. Строка
psz может содержать внутри нулевые символы и не обязана заканчиваться
таким символом. Для освобождения полученной строки используйте
SysFreeString.